package fastjsonDemo.JSONDemo;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import org.junit.Test;

import java.util.Date;
import java.util.HashMap;


/**
 * Fastjson能识别很多种日期格式,具体识别哪些格式看
 *
 * @com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec 这个类
 */
public class DateTimeDemo {
	/**
	 * 输出json同时指定日期格式
	 */
	@Test
	public void ceui() {
		HashMap<String, Object> map = new HashMap<>();
		map.put("date", new Date());
		map.put("name", "张三");
		map.put("date2", new Date());

//		  String s = JSON.toJSONStringWithDateFormat(map, "yyyy-MM-dd HH:mm:ss");
		//结果  {"date":"2019-08-30 14:11:39","name":"张三","date2":"2019-08-30 14:11:39"}

//		  String s = JSON.toJSONStringWithDateFormat(map, "yyyy-MM-dd");
		//结果  {"date":"2019-08-30","name":"张三","date2":"2019-08-30"}

		String s = JSON.toJSONStringWithDateFormat(map, "yyyy年MM月dd日 HH时mm分ss");
		//   结果 {"date":"2019年08月30日 14时12分33","name":"张三","date2":"2019年08月30日 14时12分33"}
		System.out.println(s);

	}


	@Test
	public void ceui1() {
		Model model = new Model();
		model.setDate(new Date());

		String jsonString = JSON.toJSONString(model);

		System.out.println("jsonString = " + jsonString);
		// 可以使用@JSONField 切换格式
		//jsonString = {"date":"八月 30, 2019 11:02:36 上午"}
		//jsonString = {"date":"2019-08-30 11:04:30"}
		//jsonString = {"date":"2019年8月30日"}
		//jsonString = {"date":"2019"}
	}

	/**
	 * 内部类
	 */
	static class Model {

		//		@JSONField(format = "MMM dd, yyyy h:mm:ss aa")
//		@JSONField(format = "yyyy-MM-dd HH:mm:ss")
		@JSONField(format = "yyyy")
		private Date date;

		public void setDate(Date date) {
			this.date = date;
		}

		public Date getDate() {
			return date;
		}
	}


}
